<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // Set与Map 都是在ES6中所新增的数据结构 表示集合 唯一不重复
        // 1、Set 理解为数组
        // 1.1、创建Set集合 语法 new Set([元素1,元素2....])
        let s = new Set([20,30]);
        // 1.2、获取集合容量
        console.log(s.size);
        // 1.3、集合中添加元素
        s.add(50)
        s.add(20);//重复添加无效
        // 1.4、检查集合元素是否存在
        console.log(s.has(90)); 
        // 1.5、遍历
        s.forEach((item,index)=>{
            console.log(item,index)
        })
        // let it = s.keys();
        // console.log(it.next())
        // console.log(it.next())
        // console.log(it.next())
        // console.log(it.next())
        // console.log(it.next())
        // 1.6、delete 删除元素
        s.delete(20)
        // 1.7、清除
        s.clear()
        
        console.log(s)

        // 2、面试题
        let obj = {}
        let a = 'aa';
        let b = 'ba';
        obj[a] = 10;
        obj[b] = 20;
        // obj对象下有几个属性 名称分别是什么
        console.log(obj)

        let data = {};
        let zs = {name:'张三'}
        let ls = {name:'李四'}
        data[zs] = '张三'
        data[ls] = '李四'
        // obj对象下有几个属性 名称分别是什么
        console.log(data)
        // js的对象中 属性名称只能是字符串。如果属性名称不是字符串，会自动的调用toString方法进行转换
        // data[zs] = '张三'  向data中添加一个属性名称为sz变量值的属性但是sz变量是对象 自动调用toString 被转换为 data['[object Object]'] = '张三'
        // data[ls] = '李四' 同样也会进行转换 所以进行了修改操作
        console.log('-------------------------------------')
        // 3、Map 理解为对象  Map 可以使用任意的数据类型作为属性名称
        // 3.1、创建Map    new Map([[名称,值],[名称,值]])
        let m = new Map([['name','张三'],[ls,'李四']]);
        // 3.1、查看容量
        console.log(m.size)
        // 3.2、添加元素
        m.set({name:'王五'},'王五')
        // 3.3、获取元素
        console.log(m.get('name'))
        console.log(m.get(ls));//当需要获取到对象作为属性名称的值 一定要指定名称
        console.log(m.get({name:'李四'}));//undefined
        // 3.4、遍历
        m.forEach((item,index)=>{
            console.log(item,index)
        })

        console.log(m)


    </script>
</body>
</html>